/**
 * 路由配置和页面映射
 * 定义所有路由及其对应的视图组件
 */

// 路由配置
const routes = [
    {
        path: '/',
        name: 'home',
        title: '首页',
        icon: 'layui-icon-home',
        component: 'home',
        description: '系统首页和概览'
    },
    {
        path: '/charts',
        name: 'charts',
        title: '图表测试',
        icon: 'layui-icon-chart',
        component: 'charts',
        description: '各种图表展示和测试'
    },
    {
        path: '/links',
        name: 'links',
        title: '链接信息',
        icon: 'layui-icon-link',
        component: 'links',
        description: '链接信息管理和监控'
    },
    {
        path: '/stats/day',
        name: 'stats-day',
        title: '按天统计',
        icon: 'layui-icon-chart-screen',
        component: 'statsDay',
        description: '按天统计数据展示'
    },
    {
        path: '/stats/proc',
        name: 'stats-proc',
        title: '按进程统计',
        icon: 'layui-icon-chart-screen',
        component: 'statsProc',
        description: '按进程统计数据展示'
    },
    {
        path: '/v2/resolve',
        name: 'v2-resolve',
        title: 'V2解析',
        icon: 'layui-icon-engine',
        component: 'v2Resolve',
        description: 'V2Ray配置解析工具'
    }
];

// 侧边栏菜单配置
const sidebarMenu = [
    {
        title: '系统管理',
        icon: 'layui-icon-set',
        children: [
            {
                path: '/',
                title: '首页',
                icon: 'layui-icon-home'
            },
            {
                path: '/charts',
                title: '图表测试',
                icon: 'layui-icon-chart'
            }
        ]
    },
    {
        title: '数据统计',
        icon: 'layui-icon-chart-screen',
        children: [
            {
                path: '/stats/day',
                title: '按天统计',
                icon: 'layui-icon-chart-screen'
            },
            {
                path: '/stats/proc',
                title: '按进程统计',
                icon: 'layui-icon-chart-screen'
            }
        ]
    },
    {
        title: '链接管理',
        icon: 'layui-icon-link',
        children: [
            {
                path: '/links',
                title: '链接信息',
                icon: 'layui-icon-link'
            }
        ]
    },
    {
        title: '工具箱',
        icon: 'layui-icon-engine',
        children: [
            {
                path: '/v2/resolve',
                title: 'V2解析',
                icon: 'layui-icon-engine'
            }
        ]
    }
];

// 面包屑导航配置
const breadcrumbConfig = {
    '/': ['首页'],
    '/charts': ['系统管理', '图表测试'],
    '/links': ['链接管理', '链接信息'],
    '/stats/day': ['数据统计', '按天统计'],
    '/stats/proc': ['数据统计', '按进程统计'],
    '/v2/resolve': ['工具箱', 'V2解析']
};

// 页面标题配置
const pageTitleConfig = {
    '/': '首页 - LayUI单页面应用',
    '/charts': '图表测试 - LayUI单页面应用',
    '/links': '链接信息 - LayUI单页面应用',
    '/stats/day': '按天统计 - LayUI单页面应用',
    '/stats/proc': '按进程统计 - LayUI单页面应用',
    '/v2/resolve': 'V2解析 - LayUI单页面应用'
};

// 路由工具函数
const routeUtils = {
    /**
     * 根据路径获取路由配置
     */
    getRouteByPath(path) {
        return routes.find(route => route.path === path) || routes[0];
    },
    
    /**
     * 根据名称获取路由配置
     */
    getRouteByName(name) {
        return routes.find(route => route.name === name) || routes[0];
    },
    
    /**
     * 获取面包屑数据
     */
    getBreadcrumb(path) {
        return breadcrumbConfig[path] || ['首页'];
    },
    
    /**
     * 获取页面标题
     */
    getPageTitle(path) {
        return pageTitleConfig[path] || 'LayUI单页面应用';
    },
    
    /**
     * 获取侧边栏菜单
     */
    getSidebarMenu() {
        return sidebarMenu;
    },
    
    /**
     * 检查路径是否有效
     */
    isValidPath(path) {
        return routes.some(route => route.path === path);
    },
    
    /**
     * 获取所有路由
     */
    getAllRoutes() {
        return routes;
    },
    
    /**
     * 根据组件名称获取视图类
     */
    getViewComponent(componentName) {
        if (!window.ViewComponents) {
            console.error('ViewComponents 未定义');
            return null;
        }
        
        return window.ViewComponents[componentName] || null;
    }
};

// 导出配置
if (typeof module !== 'undefined' && module.exports) {
    module.exports = {
        routes,
        sidebarMenu,
        breadcrumbConfig,
        pageTitleConfig,
        routeUtils
    };
} else {
    // 浏览器环境，挂载到全局对象
    window.RouteConfig = {
        routes,
        sidebarMenu,
        breadcrumbConfig,
        pageTitleConfig,
        routeUtils
    };
}